fix: teardown UI sibling gracefully on ok start exit#702
Closed
Adityakk9031 wants to merge 1 commit into
Closed
Conversation
Adityakk9031
had a problem deploying
to
inkeep-oss-sync
July 20, 2026 10:27 — with
GitHub Actions
Error
Adityakk9031
force-pushed
the
fix-stale-ui-process
branch
from
July 20, 2026 10:32
b023030 to
3af8c8e
Compare
Adityakk9031
had a problem deploying
to
inkeep-oss-sync
July 20, 2026 10:32 — with
GitHub Actions
Failure
Contributor
Author
|
@tim-inkeep have a look |
|
I could not sync this PR automatically. A maintainer will look into it. The diff could not be applied on our side. This is a bridge-side issue, not a problem with your PR (which is already based on the latest public base); a maintainer will look into it. |
inkeep-oss-sync Bot
pushed a commit
that referenced
this pull request
Jul 22, 2026
…its via a signal (#2795) Fixes #692: `ok start` spawns a detached `ok ui` process for the editor shell. On Ctrl+C (SIGINT/SIGTERM) the CLI destroyed the collab server but never signalled the UI child, which lingered until its 12h safety timer — holding its port so the next `ok start` bound a different one. The signal path now runs the same guarded UI teardown as idle-shutdown, before destroy releases server.lock. The SIGTERM → grace-poll → SIGKILL escalation is factored out of `buildIdleShutdownHandler` into a shared `teardownUiSibling`, so both call sites honor the SAME ownership guard: `spawnedUiPid` scopes the kill to the sibling this process spawned, leaving a lock holder we did not spawn (a desktop shell, another session) untouched. `BootedStartServer` now exposes `spawnedUiPid` so the signal handler passes the owned pid through; the signal path's teardown is wrapped so a failure there never bypasses destroy(). Reworks community PR #702 by @Adityakk9031, preserving the `spawnedUiPid` ownership guard that #702 dropped and fixing its changeset (correct package name, no BOM). Adds `teardownUiSibling` unit tests covering the signal path's guard. Co-authored-by: Aditya kumar singh <143548997+Adityakk9031@users.noreply.github.com> GitOrigin-RevId: 67089dae1d813dbd3470369c7fd73142801a67c7
inkeep-oss-sync Bot
pushed a commit
that referenced
this pull request
Jul 22, 2026
…its via a signal (#2795) Fixes #692: `ok start` spawns a detached `ok ui` process for the editor shell. On Ctrl+C (SIGINT/SIGTERM) the CLI destroyed the collab server but never signalled the UI child, which lingered until its 12h safety timer — holding its port so the next `ok start` bound a different one. The signal path now runs the same guarded UI teardown as idle-shutdown, before destroy releases server.lock. The SIGTERM → grace-poll → SIGKILL escalation is factored out of `buildIdleShutdownHandler` into a shared `teardownUiSibling`, so both call sites honor the SAME ownership guard: `spawnedUiPid` scopes the kill to the sibling this process spawned, leaving a lock holder we did not spawn (a desktop shell, another session) untouched. `BootedStartServer` now exposes `spawnedUiPid` so the signal handler passes the owned pid through; the signal path's teardown is wrapped so a failure there never bypasses destroy(). Reworks community PR #702 by @Adityakk9031, preserving the `spawnedUiPid` ownership guard that #702 dropped and fixing its changeset (correct package name, no BOM). Adds `teardownUiSibling` unit tests covering the signal path's guard. Co-authored-by: Aditya kumar singh <143548997+Adityakk9031@users.noreply.github.com> GitOrigin-RevId: 67089dae1d813dbd3470369c7fd73142801a67c7
inkeep-oss-sync Bot
pushed a commit
that referenced
this pull request
Jul 22, 2026
…its via a signal (#2795) Fixes #692: `ok start` spawns a detached `ok ui` process for the editor shell. On Ctrl+C (SIGINT/SIGTERM) the CLI destroyed the collab server but never signalled the UI child, which lingered until its 12h safety timer — holding its port so the next `ok start` bound a different one. The signal path now runs the same guarded UI teardown as idle-shutdown, before destroy releases server.lock. The SIGTERM → grace-poll → SIGKILL escalation is factored out of `buildIdleShutdownHandler` into a shared `teardownUiSibling`, so both call sites honor the SAME ownership guard: `spawnedUiPid` scopes the kill to the sibling this process spawned, leaving a lock holder we did not spawn (a desktop shell, another session) untouched. `BootedStartServer` now exposes `spawnedUiPid` so the signal handler passes the owned pid through; the signal path's teardown is wrapped so a failure there never bypasses destroy(). Reworks community PR #702 by @Adityakk9031, preserving the `spawnedUiPid` ownership guard that #702 dropped and fixing its changeset (correct package name, no BOM). Adds `teardownUiSibling` unit tests covering the signal path's guard. Co-authored-by: Aditya kumar singh <143548997+Adityakk9031@users.noreply.github.com> GitOrigin-RevId: 67089dae1d813dbd3470369c7fd73142801a67c7
Contributor
|
Thank you @Adityakk9031 -- merged this with full attribution to your PR and github account in commit 8a7779b |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resolves #692
Description
This PR fixes an issue where stopping the server (
ok start) viaCtrl+Cwould leave a detached, staleok uiprocess running in the background, which locked up the port.Previously, when a user interrupted the
ok startcommand, the CLI correctly tore down the backend services but did not signal the siblingok uiprocess (which runs detached). The UI process would persist in the background until its 12-hour safety timer expired.What Changed
buildIdleShutdownHandler)—was extracted into a reusableteardownUiSiblinghelper.teardownUiSiblinginto the standardSIGINTandSIGTERMshutdown handlers withinrunStartCommand.SIGTERMto the sibling UI process, waits gracefully for it to exit, and escalates toSIGKILLif it gets stuck.Testing
Ctrl+Cduringok start --opennow correctly kills both the collab server and the proxying UI process.